home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / pcl / docs.lha / cmu-user / cmu-user.info-9 < prev    next >
Text File  |  1992-08-05  |  53KB  |  1,571 lines

  1. Info file: cmu-user.info,    -*-Text-*-
  2. produced by latexinfo-format-buffer
  3. from file: cmu-user.tex
  4.  
  5.  
  6. 
  7. File: cmu-user.info  Node: Connecting Servers and Clients, Prev: The REMOTE Package, Up: The REMOTE Package, Next: Remote Evaluations
  8.  
  9. Connecting Servers and Clients
  10. ------------------------------
  11.  
  12.  
  13. Before a client can connect to a server, it must know the network address on
  14. which the server accepts connections.  Network addresses consist of a host
  15. address or name, and a port number.  Host addresses are either a string of the
  16. form `VANCOUVER.SLISP.CS.CMU.EDU' or a 32 bit unsigned integer.  Port
  17. numbers are 16 bit unsigned integers.  Note: PORT in this context has
  18. nothing to do with Mach ports and message passing.
  19.  
  20. When a process wants to receive connection requests (that is, become a
  21. server), it first picks an integer to use as the port.  Only one server
  22. (Lisp or otherwise) can use a given port number on a given machine at
  23. any particular time.  This can be an iterative process to find a free
  24. port: picking an integer and calling `create-request-server'.  This
  25. function signals an error if the chosen port is unusable.  You will
  26. probably want to write a loop using `handler-case', catching
  27. conditions of type error, since this function does not signal more
  28. specific conditions.
  29.  
  30.  
  31.   -- Function: create-request-server 
  32.  PORT &optional ON-CONNECT
  33.  
  34.      `create-request-server' sets up the current Lisp to accept connections on
  35.      the given port.  If port is unavailable for any reason, this signals an error.
  36.      When a client connects to this port, the acceptance mechanism makes a wire
  37.      structure and invokes the ON-CONNECT function.  Invoking this function has
  38.      a couple purposes, and ON-CONNECT may be nil in which case the system
  39.      foregoes invoking any function at connect time.
  40.      
  41.      The ON-CONNECT function is both a hook that allows you access to the wire
  42.      created by the acceptance mechanism, and it confirms the connection.  This
  43.      function takes two arguments, the wire and the host address of the connecting
  44.      process.  See the section on host addresses below.  When ON-CONNECT is
  45.      nil, the request server allows all connections.  When it is non-nil, the
  46.      function returns two values, whether to accept the connection and a function
  47.      the system should call when the connection terminates.  Either value may be
  48.      nil, but when the first value is nil, the acceptance mechanism destroys the
  49.      wire.
  50.      
  51.      `create-request-server' returns an object that `destroy-request-server'
  52.      uses to terminate a connection.
  53.  
  54.  
  55.  
  56.  -- Function: destroy-request-server SERVER
  57.  
  58.      `destroy-request-server' takes the result of `create-request-server' and
  59.      terminates that server.  Any existing connections remain intact, but all
  60.      additional connection attempts will fail.
  61.  
  62.  
  63.  
  64.   -- Function: connect-to-remote-server 
  65.  HOST PORT &optional ON-DEATH
  66.  
  67.      `connect-to-remote-server' attempts to connect to a remote server at the
  68.      given PORT on HOST and returns a wire structure if it is successful.
  69.      If ON-DEATH is non-nil, it is a function the system invokes when this
  70.      connection terminates.
  71.  
  72.  
  73.  
  74. 
  75. File: cmu-user.info  Node: Remote Evaluations, Prev: Connecting Servers and Clients, Up: The REMOTE Package, Next: Remote Objects
  76.  
  77. Remote Evaluations
  78. ------------------
  79.  
  80. After the server and client have connected, they each have a wire allowing
  81. function evaluation in the other process.  This RPC mechanism has three
  82. flavors: for side-effect only, for a single value, and for multiple values.
  83.  
  84. Only a limited number of data types can be sent across wires as arguments for
  85. remote function calls and as return values: integers inclusively less than 32
  86. bits in length, symbols, lists, and REMOTE-OBJECTS (?).  The system sends symbols as two strings, the package name
  87. and the symbol name, and if the package doesn't exist remotely, the remote
  88. process signals an error.  The system ignores other slots of symbols.  Lists
  89. may be any tree of the above valid data types.  To send other data types you
  90. must represent them in terms of these supported types.  For example, you could
  91. use `prin1-to-string' locally, send the string, and use `read-from-string'
  92. remotely.
  93.  
  94.  
  95.  -- Macro: remote wire {call-specs}*
  96.  
  97.      The `remote' macro arranges for the process at the other end of WIRE to
  98.      invoke each of the functions in the CALL-SPECS.  To make sure the system
  99.      sends the remote evaluation requests over the wire, you must call
  100.      `wire-force-output'.
  101.      
  102.      Each of CALL-SPECS looks like a function call textually, but it has some
  103.      odd constraints and semantics.  The function position of the form must be the
  104.      symbolic name of a function.  `remote' evaluates each of the argument
  105.      subforms for each of the CALL-SPECS locally in the current context, sending
  106.      these values as the arguments for the functions.
  107.      
  108.      Consider the following example:
  109.      (defun write-remote-string (str)
  110.        (declare (simple-string str))
  111.        (wire:remote wire
  112.          (write-string str))) The value of `str' in the local process is
  113.      passed over the wire with a request to invoke `write-string' on the
  114.      value.  The system does not expect to remotely evaluate `str' for a
  115.      value in the remote process.
  116.  
  117.  
  118.  
  119.  -- Function: wire-force-output WIRE
  120.  
  121.      `wire-force-output' flushes all internal buffers associated with
  122.      WIRE, sending the remote requests.  This is necessary after a call
  123.      to `remote'.
  124.  
  125.  
  126.  
  127.  -- Macro: remote-value wire call-spec
  128.  
  129.      The `remote-value' macro is similar to the `remote' macro.
  130.      `remote-value' only takes one CALL-SPEC, and it returns the value
  131.      returned by the function call in the remote process.  The value
  132.      must be a valid type the system can send over a wire, and there is
  133.      no need to call `wire-force-output' in conjunction with this
  134.      interface.
  135.      
  136.      If client unwinds past the call to `remote-value', the server
  137.      continues running, but the system ignores the value the server
  138.      sends back.
  139.      
  140.      If the server unwinds past the remotely requested call, instead of
  141.      returning normally, `remote-value' returns two values, nil and
  142.      true.  Otherwise this returns the result of the remote evaluation
  143.      and nil.
  144.  
  145.  
  146.  
  147.   -- Macro: remote-value-bind 
  148.   wire ({variable}*) remote-form {local-forms}*
  149.  
  150.      `remote-value-bind' is similar to `multiple-value-bind' except the
  151.      values bound come from REMOTE-FORM's evaluation in the remote
  152.      process.  The LOCAL-FORMS execute in an implicit `progn'.
  153.      
  154.      If the client unwinds past the call to `remote-value-bind', the
  155.      server continues running, but the system ignores the values the
  156.      server sends back.
  157.      
  158.      If the server unwinds past the remotely requested call, instead of
  159.      returning normally, the LOCAL-FORMS never execute, and
  160.      `remote-value-bind' returns nil.
  161.  
  162.  
  163.  
  164. 
  165. File: cmu-user.info  Node: Remote Objects, Prev: Remote Evaluations, Up: The REMOTE Package, Next: Host Addresses
  166.  
  167. Remote Objects
  168. --------------
  169.  
  170.  
  171. The wire mechanism only directly supports a limited number of data types
  172. for transmission as arguments for remote function calls and as return
  173. values: integers inclusively less than 32 bits in length, symbols,
  174. lists.  Sometimes it is useful to allow remote processes to refer to
  175. local data structures without allowing the remote process to operate on
  176. the data.  We have REMOTE-OBJECTS to support this without the need to
  177. represent the data structure in terms of the above data types, to send
  178. the representation to the remote process, to decode the representation,
  179. to later encode it again, and to send it back along the wire.
  180.  
  181. You can convert any Lisp object into a remote-object.  When you send a
  182. remote-object along a wire, the system simply sends a unique token for
  183. it.  In the remote process, the system looks up the token and returns a
  184. remote-object for the token.  When the remote process needs to refer to
  185. the original Lisp object as an argument to a remote call back or as a
  186. return value, it uses the remote-object it has which the system converts
  187. to the unique token, sending that along the wire to the originating
  188. process.  Upon receipt in the first process, the system converts the
  189. token back to the same (`eq') remote-object.
  190.  
  191.  
  192.  -- Function: make-remote-object OBJECT
  193.  
  194.      `make-remote-object' returns a remote-object that has OBJECT as its
  195.      value.  The remote-object can be passed across wires just like the
  196.      directly supported wire data types.
  197.  
  198.  
  199.  
  200.  -- Function: remote-object-p OBJECT
  201.  
  202.      The function `remote-object-p' returns true if OBJECT is a remote
  203.      object and nil otherwise.
  204.  
  205.  
  206.  
  207.  -- Function: remote-object-local-p REMOTE
  208.  
  209.      The function `remote-object-local-p' returns true if REMOTE refers
  210.      to an object in the local process.  This is can only occur if the
  211.      local process created REMOTE with `make-remote-object'.
  212.  
  213.  
  214.  
  215.  -- Function: remote-object-eq obj1 obj2
  216.  
  217.      The function `remote-object-eq' returns true if obj1 and obj2 refer
  218.      to the same (`eq') lisp object, regardless of which process created
  219.      the remote-objects.
  220.  
  221.  
  222.  
  223.  -- Function: remote-object-value REMOTE
  224.  
  225.      This function returns the original object used to create the given
  226.      remote object.  It is an error if some other process originally
  227.      created the remote-object.
  228.  
  229.  
  230.  
  231.  -- Function: forget-remote-translation OBJECT
  232.  
  233.      This function removes the information and storage necessary to
  234.      translate remote-objects back into OBJECT, so the next `gc' can
  235.      reclaim the memory.  You should use this when you no longer expect
  236.      to receive references to OBJECT.  If some remote process does send
  237.      a reference to OBJECT, `remote-object-value' signals an error.
  238.  
  239.  
  240.  
  241. 
  242. File: cmu-user.info  Node: Host Addresses, Prev: Remote Objects, Up: The REMOTE Package
  243.  
  244. Host Addresses
  245. --------------
  246.  
  247. The operating system maintains a database of all the valid host
  248. addresses.  You can use this database to convert between host names and
  249. addresses and vice-versa.
  250.  
  251.  
  252.  -- Function: lookup-host-entry HOST
  253.  
  254.      `lookup-host-entry' searches the database for the given HOST and
  255.      returns a host-entry structure for it.  If it fails to find HOST in
  256.      the database, it returns nil.  HOST is either the address (as an
  257.      integer) or the name (as a string) of the desired host.
  258.  
  259.  
  260.  
  261.  -- Function: host-entry-name HOST-ENTRY
  262.  
  263.  -- Function: host-entry-aliases HOST-ENTRY
  264.  
  265.  -- Function: host-entry-addr-list HOST-ENTRY
  266.  
  267.  -- Function: host-entry-addr HOST-ENTRY
  268.  
  269.      `host-entry-name', `host-entry-aliases', and `host-entry-addr-list'
  270.      each return the indicated slot from the host-entry structure.
  271.      `host-entry-addr' returns the primary (first) address from the list
  272.      returned by `host-entry-addr-list'.
  273.  
  274.  
  275.  
  276. 
  277. File: cmu-user.info  Node: The WIRE Package, Prev: The REMOTE Package, Up: Interprocess Communication under LISP, Next: Out-Of-Band Data
  278.  
  279. The WIRE Package
  280. ================
  281.  
  282.  
  283. The `wire' package provides for sending data along wires.  The `remote'
  284. package sits on top of this package.  All data sent with a given output
  285. routine must be read in the remote process with the complementary
  286. fetching routine.  For example, if you send so a string with
  287. `wire-output-string', the remote process must know to use
  288. `wire-get-string'.  To avoid rigid data transfers and complicated code,
  289. the interface supports sending TAGGED data.  With tagged data, the
  290. system sends a tag announcing the type of the next data, and the remote
  291. system takes care of fetching the appropriate type.
  292.  
  293. When using interfaces at the wire level instead of the RPC level, the
  294. remote process must read everything sent by these routines.  If the
  295. remote process leaves any input on the wire, it will later mistake the
  296. data for an RPC request causing unknown lossage.
  297.  
  298. * Menu:
  299.  
  300. * Untagged Data::               
  301. * Tagged Data::                 
  302. * Making Your Own Wires::       
  303.  
  304.  
  305. 
  306. File: cmu-user.info  Node: Untagged Data, Prev: The WIRE Package, Up: The WIRE Package, Next: Tagged Data
  307.  
  308. Untagged Data
  309. -------------
  310.  
  311. When using these routines both ends of the wire know exactly what types are
  312. coming and going and in what order. This data is restricted to the following
  313. types:
  314.      
  315.    * 8 bit unsigned bytes.
  316.      
  317.    * 32 bit unsigned bytes.
  318.      
  319.    * 32 bit integers.
  320.      
  321.    * simple-strings less than 65535 in length.
  322.  
  323.  
  324.  
  325.  
  326.  -- Function: wire-output-byte wire byte
  327.  
  328.  -- Function: wire-get-byte WIRE
  329.  
  330.  -- Function: wire-output-number wire number
  331.  
  332.  -- Function: wire-get-number WIRE &optional SIGNED
  333.  
  334.  -- Function: wire-output-string wire string
  335.  
  336.  -- Function: wire-get-string WIRE
  337.  
  338.      These functions either output or input an object of the specified
  339.      data type.  When you use any of these output routines to send data
  340.      across the wire, you must use the corresponding input routine
  341.      interpret the data.
  342.  
  343.  
  344.  
  345. 
  346. File: cmu-user.info  Node: Tagged Data, Prev: Untagged Data, Up: The WIRE Package, Next: Making Your Own Wires
  347.  
  348. Tagged Data
  349. -----------
  350.  
  351. When using these routines, the system automatically transmits and
  352. interprets the tags for you, so both ends can figure out what kind of
  353. data transfers occur.  Sending tagged data allows a greater variety of
  354. data types: integers inclusively less than 32 bits in length, symbols,
  355. lists, and REMOTE-OBJECTS (*Note Remote Objects::).  The system sends
  356. symbols as two strings, the package name and the symbol name, and if the
  357. package doesn't exist remotely, the remote process signals an error.
  358. The system ignores other slots of symbols.  Lists may be any tree of the
  359. above valid data types.  To send other data types you must represent
  360. them in terms of these supported types.  For example, you could use
  361. `prin1-to-string' locally, send the string, and use `read-from-string'
  362. remotely.
  363.  
  364.  
  365.  -- Function: wire-output-object wire object &optional CACHE-IT
  366.  
  367.  -- Function: wire-get-object WIRE
  368.  
  369.      The function `wire-output-object' sends OBJECT over WIRE preceded
  370.      by a tag indicating its type.
  371.      
  372.      If CACHE-IT is non-nil, this function only sends OBJECT the first
  373.      time it gets OBJECT.  Each end of the wire associates a token with
  374.      OBJECT, similar to remote-objects, allowing you to send the object
  375.      more efficiently on successive transmissions.  CACHE-IT defaults to
  376.      true for symbols and nil for other types.  Since the RPC level
  377.      requires function names, a high-level protocol based on a set of
  378.      function calls saves time in sending the functions' names
  379.      repeatedly.
  380.      
  381.      The function `wire-get-object' reads the results of
  382.      `wire-output-object' and returns that object.
  383.  
  384.  
  385.  
  386. 
  387. File: cmu-user.info  Node: Making Your Own Wires, Prev: Tagged Data, Up: The WIRE Package
  388.  
  389. Making Your Own Wires
  390. ---------------------
  391.  
  392. You can create wires manually in addition to the `remote' package's
  393. interface creating them for you.  To create a wire, you need a Unix file
  394. descriptor.  If you are unfamiliar with Unix file descriptors, see
  395. section 2 of the Unix manual pages.
  396.  
  397.  
  398.  -- Function: make-wire DESCRIPTOR
  399.  
  400.      The function `make-wire' creates a new wire when supplied with the
  401.      file descriptor to use for the underlying I/O operations.
  402.  
  403.  
  404.  
  405.  -- Function: wire-p OBJECT
  406.  
  407.      This function returns true if OBJECT is indeed a wire, nil
  408.      otherwise.
  409.  
  410.  
  411.  
  412.  -- Function: wire-fd WIRE
  413.  
  414.      This function returns the file descriptor used by the WIRE.
  415.  
  416.  
  417.  
  418. 
  419. File: cmu-user.info  Node: Out-Of-Band Data, Prev: The WIRE Package, Up: Interprocess Communication under LISP
  420.  
  421. Out-Of-Band Data
  422. ================
  423.  
  424.  
  425. The TCP/IP protocol allows users to send data asynchronously, otherwise
  426. known as OUT-OF-BAND data.  When using this feature, the operating
  427. system interrupts the receiving process if this process has chosen to be
  428. notified about out-of-band data.  The receiver can grab this input
  429. without affecting any information currently queued on the socket.
  430. Therefore, you can use this without interfering with any current
  431. activity due to other wire and remote interfaces.
  432.  
  433. Unfortunately, most implementations of TCP/IP are broken, so use of
  434. out-of-band data is limited for safety reasons.  You can only reliably
  435. send one character at a time.
  436.  
  437. This routines in this section provide a mechanism for establishing
  438. handlers for out-of-band characters and for sending them out-of-band.
  439. These all take a Unix file descriptor instead of a wire, but you can
  440. fetch a wire's file descriptor with `wire-fd'.
  441.  
  442.  
  443.  -- Function: add-oob-handler fd char handler
  444.  
  445.      The function `add-oob-handler' arranges for HANDLER to be called
  446.      whenever CHAR shows up as out-of-band data on the file descriptor
  447.      FD.
  448.  
  449.  
  450.  
  451.  -- Function: remove-oob-handler fd char
  452.  
  453.      This function removes the handler for the character CHAR on the
  454.      file descriptor FD.
  455.  
  456.  
  457.  
  458.  -- Function: remove-all-oob-handlers FD
  459.  
  460.      This function removes all handlers for the file descriptor FD.
  461.  
  462.  
  463.  
  464.  -- Function: send-character-out-of-band fd char
  465.  
  466.      This function Sends the character CHAR down the file descriptor FD
  467.      out-of-band.
  468.  
  469.  
  470.  
  471.  
  472. 
  473. File: cmu-user.info  Node: Debugger Programmer's Interface, Prev: Interprocess Communication under LISP, Up: Top, Next: Function Index
  474.  
  475. Debugger Programmer's Interface
  476. *******************************
  477.  
  478.  
  479. The debugger programmers interface is exported from from the
  480. `"DEBUG-INTERNALS"' or `"DI"' package.  This is a CMU extension that
  481. allows debugging tools to be written without detailed knowledge of the
  482. compiler or run-time system.
  483.  
  484. Some of the interface routines take a code-location as an argument.  As
  485. described in the section on code-locations, some code-locations are
  486. unknown.  When a function calls for a BASIC-CODE-LOCATION, it takes
  487. either type, but when it specifically names the argument CODE-LOCATION,
  488. the routine will signal an error if you give it an unknown
  489. code-location.
  490.  
  491. * Menu:
  492.  
  493. * DI Exceptional Conditions::   
  494. * Debug-variables::             
  495. * Frames::                      
  496. * Debug-functions::             
  497. * Debug-blocks::                
  498. * Breakpoints::                 
  499. * Code-locations::              
  500. * Debug-sources::               
  501. * Source Translation Utilities::  
  502.  
  503.  
  504.  
  505. 
  506. File: cmu-user.info  Node: DI Exceptional Conditions, Prev: Debugger Programmer's Interface, Up: Debugger Programmer's Interface, Next: Debug-variables
  507.  
  508. DI Exceptional Conditions
  509. =========================
  510.  
  511.  
  512. Some of these operations fail depending on the availability debugging
  513. information.  In the most severe case, when someone saved a Lisp image
  514. stripping all debugging data structures, no operations are valid.  In
  515. this case, even backtracing and finding frames is impossible.  Some
  516. interfaces can simply return values indicating the lack of information,
  517. or their return values are naturally meaningful in light missing data.
  518. Other routines, as documented below, will signal `serious-condition's
  519. when they discover awkward situations.  This interface does not provide
  520. for programs to detect these situations other than by calling a routine
  521. that detects them and signals a condition.  These are serious-conditions
  522. because the program using the interface must handle them before it can
  523. correctly continue execution.  These debugging conditions are not errors
  524. since it is no fault of the programmers that the conditions occur.
  525.  
  526. * Menu:
  527.  
  528. * Debug-conditions::            
  529. * Debug-errors::                
  530.  
  531.  
  532. 
  533. File: cmu-user.info  Node: Debug-conditions, Prev: DI Exceptional Conditions, Up: DI Exceptional Conditions, Next: Debug-errors
  534.  
  535. Debug-conditions
  536. ----------------
  537.  
  538.  
  539. The debug internals interface signals conditions when it can't adhere
  540. to its contract.  These are serious-conditions because the program
  541. using the interface must handle them before it can correctly continue
  542. execution.  These debugging conditions are not errors since it is no
  543. fault of the programmers that the conditions occur.  The interface
  544. does not provide for programs to detect these situations other than
  545. calling a routine that detects them and signals a condition.
  546.  
  547.  
  548.  
  549.  
  550.  -- Condition: debug-condition
  551.      This condition inherits from serious-condition, and all debug-conditions
  552.      inherit from this.  These must be handled, but they are not programmer errors.
  553.  
  554.  
  555.  
  556.  
  557.  
  558.  -- Condition: no-debug-info
  559.      This condition indicates there is absolutely no debugging information
  560.      available.
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  -- Condition: no-debug-function-returns
  567.      This condition indicates the system cannot return values from a frame since
  568.      its debug-function lacks debug information details about returning values.
  569.  
  570.  
  571.  
  572.  
  573.  -- Condition: no-debug-blocks
  574.      This condition indicates that a function was not compiled with debug-block
  575.      information, but this information is necessary necessary for some requested
  576.      operation.
  577.  
  578.  
  579.  
  580.  -- Condition: no-debug-variables
  581.      Similar to `no-debug-blocks', except that variable information was
  582.      requested.
  583.  
  584.  
  585.  
  586.  -- Condition: lambda-list-unavailable
  587.      Similar to `no-debug-blocks', except that lambda list information was
  588.      requested.
  589.  
  590.  
  591.  
  592.  
  593.  -- Condition: invalid-value
  594.      This condition indicates a debug-variable has `:invalid' or `:unknown'
  595.      value in a particular frame.
  596.  
  597.  
  598.  
  599.  
  600.  
  601.  -- Condition: ambiguous-variable-name
  602.      This condition indicates a user supplied debug-variable name identifies more
  603.      than one valid variable in a particular frame.
  604.  
  605.  
  606.  
  607. 
  608. File: cmu-user.info  Node: Debug-errors, Prev: Debug-conditions, Up: DI Exceptional Conditions
  609.  
  610. Debug-errors
  611. ------------
  612.  
  613.  
  614. These are programmer errors resulting from misuse of the debugging tools'
  615. programmers' interface.  You could have avoided an occurrence of one of these
  616. by using some routine to check the use of the routine generating the error.
  617.  
  618.  
  619.  
  620.  -- Condition: debug-error
  621.      This condition inherits from error, and all user programming errors inherit
  622.      from this condition.
  623.  
  624.  
  625.  
  626.  
  627.  -- Condition: unhandled-condition
  628.      This error results from a signalled `debug-condition' occurring
  629.      without anyone handling it.
  630.  
  631.  
  632.  
  633.  
  634.  -- Condition: unknown-code-location
  635.      This error indicates the invalid use of an unknown-code-location.
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  -- Condition: unknown-debug-variable
  642.      This error indicates an attempt to use a debug-variable in conjunction with an
  643.      inappropriate debug-function; for example, checking the variable's validity
  644.      using a code-location in the wrong debug-function will signal this error.
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  -- Condition: frame-function-mismatch
  651.      This error indicates you called a function returned by
  652.      `preprocess-for-eval'
  653.      on a frame other than the one for which the function had been prepared.
  654.  
  655.  
  656.  
  657.  
  658. 
  659. File: cmu-user.info  Node: Debug-variables, Prev: DI Exceptional Conditions, Up: Debugger Programmer's Interface, Next: Frames
  660.  
  661. Debug-variables
  662. ===============
  663.  
  664.  
  665. Debug-variables represent the constant information about where the system
  666. stores argument and local variable values.  The system uniquely identifies with
  667. an integer every instance of a variable with a particular name and package.  To
  668. access a value, you must supply the frame along with the debug-variable since
  669. these are particular to a function, not every instance of a variable on the
  670. stack.
  671.  
  672.  
  673.  -- Function: debug-variable-name debug-variable
  674.  
  675.      This function returns the name of the DEBUG-VARIABLE.  The name is the
  676.      name of the symbol used as an identifier when writing the code.
  677.  
  678.  
  679.  
  680.  
  681.  -- Function: debug-variable-package debug-variable
  682.  
  683.      This function returns the package name of the DEBUG-VARIABLE.  This is
  684.      the package name of the symbol used as an identifier when writing the code.
  685.  
  686.  
  687.  
  688.  
  689.  -- Function: debug-variable-symbol debug-variable
  690.  
  691.      This function returns the symbol from interning `debug-variable-name' in
  692.      the package named by `debug-variable-package'.
  693.  
  694.  
  695.  
  696.  
  697.  -- Function: debug-variable-id debug-variable
  698.  
  699.      This function returns the integer that makes DEBUG-VARIABLE's name and
  700.      package name unique with respect to other DEBUG-VARIABLE's in the same
  701.      function.
  702.  
  703.  
  704.  
  705.  
  706.  -- Function: debug-variable-validity debug-variable basic-code-location
  707.  
  708.      This function returns three values reflecting the validity of 
  709.      DEBUG-VARIABLE's value at BASIC-CODE-LOCATION:
  710.              `:valid'
  711.                
  712.            The value is known to be available.
  713.              `:invalid'
  714.                
  715.            The value is known to be unavailable.
  716.              `:unknown'
  717.                
  718.            The value's availability is unknown.
  719.      
  720.  
  721.  
  722.  
  723.  
  724.  -- Function: debug-variable-value debug-variable frame
  725.  
  726.      This function returns the value stored for DEBUG-VARIABLE in FRAME.
  727.      The value may be invalid.  This is `SETF''able.
  728.  
  729.  
  730.  
  731.  
  732.  -- Function: debug-variable-valid-value debug-variable frame
  733.  
  734.      This function returns the value stored for DEBUG-VARIABLE in
  735.      FRAME.  If the value is not `:valid', then this signals an
  736.      `invalid-value' error.
  737.  
  738.  
  739.  
  740.  
  741. 
  742. File: cmu-user.info  Node: Frames, Prev: Debug-variables, Up: Debugger Programmer's Interface, Next: Debug-functions
  743.  
  744. Frames
  745. ======
  746.  
  747.  
  748. Frames describe a particular call on the stack for a particular thread.  This
  749. is the environment for name resolution, getting arguments and locals, and
  750. returning values.  The stack conceptually grows up, so the top of the stack is
  751. the most recently called function.
  752.  
  753. `top-frame', `frame-down', `frame-up', and
  754. `frame-debug-function' can only fail when there is absolutely no
  755. debug information available.  This can only happen when someone saved a
  756. Lisp image specifying that the system dump all debugging data.
  757.  
  758.  
  759.  
  760.  -- Function: top-frame
  761.      This function never returns the frame for itself, always the frame before
  762.      calling `top-frame'.
  763.  
  764.  
  765.  
  766.  
  767.  -- Function: frame-down frame
  768.  
  769.      This returns the frame immediately below FRAME on the stack.  When 
  770.      FRAME is the bottom of the stack, this returns nil.
  771.  
  772.  
  773.  
  774.  
  775.  -- Function: frame-up frame
  776.  
  777.      This returns the frame immediately above FRAME on the stack.  When 
  778.      FRAME is the top of the stack, this returns nil.
  779.  
  780.  
  781.  
  782.  
  783.  -- Function: frame-debug-function frame
  784.  
  785.      This function returns the debug-function for the function whose call 
  786.      FRAME represents.
  787.  
  788.  
  789.  
  790.  
  791.  -- Function: frame-code-location frame
  792.  
  793.      This function returns the code-location where FRAME's debug-function will
  794.      continue running when program execution returns to FRAME.  If someone
  795.      interrupted this frame, the result could be an unknown code-location.
  796.  
  797.  
  798.  
  799.  
  800.  -- Function: frame-catches frame
  801.  
  802.      This function returns an a-list for all active catches in FRAME mapping
  803.      catch tags to the code-locations at which the catch re-enters.
  804.  
  805.  
  806.  
  807.  
  808.  -- Function: eval-in-frame frame form
  809.  
  810.      This evaluates FORM in FRAME's environment.  This can signal
  811.      several different debug-conditions since its success relies on a variety of
  812.      inexact debug information: `invalid-value',
  813.      `ambiguous-variable-name', `frame-function-mismatch'.  See
  814.      also preprocess-for-eval ?.
  815.  
  816.  
  817.  
  818.  
  819.  -- Function: return-from-frame frame values
  820.  
  821.      This returns the elements in the list VALUES as multiple values from
  822.      FRAME as if the function FRAME represents returned these values.
  823.      This signals a `no-debug-function-returns' condition when FRAME's
  824.      debug-function lacks information on returning values.
  825.      
  826.      Not Yet Implemented
  827.  
  828.  
  829.  
  830. 
  831. File: cmu-user.info  Node: Debug-functions, Prev: Frames, Up: Debugger Programmer's Interface, Next: Debug-blocks
  832.  
  833. {Debug-functions}
  834. =================
  835.  
  836. Debug-functions represent the static information about a function determined at
  837. compile time --- argument and variable storage, their lifetime information,
  838. etc.  The debug-function also contains all the debug-blocks representing
  839. basic-blocks of code, and these contains information about specific
  840. code-locations in a debug-function.
  841.  
  842.  
  843.  
  844.  -- Macro: do-debug-function-blocks (block-var debug-function [result-form]) {form}*
  845.  
  846.      This executes the forms in a context with BLOCK-VAR bound to each
  847.      debug-block in DEBUG-FUNCTION successively.  RESULT-FORM is
  848.      an optional form to execute for a return value, and
  849.      `do-debug-function-blocks' returns nilif there is no
  850.      RESULT-FORM.  This signals a `no-debug-blocks' condition when the
  851.      DEBUG-FUNCTION lacks debug-block information.
  852.  
  853.  
  854.  
  855.  
  856.  -- Function: debug-function-lambda-list debug-function
  857.  
  858.      This function returns a list representing the lambda-list for 
  859.      DEBUG-FUNCTION.  The list has the following structure:
  860.           
  861.              (required-var1 required-var2
  862.               ...
  863.               (:optional var3 suppliedp-var4)
  864.               (:optional var5)
  865.               ...
  866.               (:rest var6) (:rest var7)
  867.               ...
  868.               (:keyword keyword-symbol var8 suppliedp-var9)
  869.               (:keyword keyword-symbol var10)
  870.               ...
  871.               )
  872.      
  873.      Each `var'N is a debug-variable; however, the symbol
  874.      `:deleted' appears instead whenever the argument remains unreferenced
  875.      throughout DEBUG-FUNCTION.
  876.      
  877.      If there is no lambda-list information, this signals a
  878.      `lambda-list-unavailable' condition.
  879.  
  880.  
  881.  
  882.  
  883.  -- Macro: do-debug-function-variables (var debug-function [result]) {form}*
  884.  
  885.      This macro executes each FORM in a context with VAR bound to each
  886.      debug-variable in DEBUG-FUNCTION.  This returns the value of executing
  887.      RESULT (defaults to nil).  This may iterate over only some of 
  888.      DEBUG-FUNCTION's variables or none depending on debug policy; for example,
  889.      possibly the compilation only preserved argument information.
  890.  
  891.  
  892.  
  893.  
  894.  -- Function: debug-variable-info-available debug-function
  895.  
  896.      This function returns whether there is any variable information for 
  897.      DEBUG-FUNCTION.  This is useful for distinguishing whether there were no
  898.      locals in a function or whether there was no variable information.  For
  899.      example, if `do-debug-function-variables' executes its forms zero times,
  900.      then you can use this function to determine the reason.
  901.  
  902.  
  903.  
  904.  
  905.  -- Function: debug-function-symbol-variables debug-function symbol
  906.  
  907.      This function returns a list of debug-variables in DEBUG-FUNCTION having
  908.      the same name and package as SYMBOL.  If SYMBOL is uninterned, then
  909.      this returns a list of debug-variables without package names and with the same
  910.      name as SYMBOL.  The result of this function is limited to the
  911.      availability of variable information in DEBUG-FUNCTION; for example,
  912.      possibly DEBUG-FUNCTION only knows about its arguments.
  913.  
  914.  
  915.  
  916.  
  917.  -- Function: ambiguous-debug-variables debug-function name-prefix-string
  918.  
  919.      This function returns a list of debug-variables in DEBUG-FUNCTION whose
  920.      names contain NAME-PREFIX-STRING as an initial substring.  The result of
  921.      this function is limited to the availability of variable information in
  922.      DEBUG-FUNCTION; for example, possibly DEBUG-FUNCTION only knows
  923.      about its arguments.
  924.  
  925.  
  926.  
  927.  
  928.  -- Function: preprocess-for-eval form basic-code-location
  929.  
  930.      This function returns a function of one argument that evaluates FORM in
  931.      the lexical context of BASIC-CODE-LOCATION.  This allows efficient
  932.      repeated evaluation of FORM at a certain place in a function which could
  933.      be useful for conditional breaking.  This signals a `no-debug-variables'
  934.      condition when the code-location's debug-function has no debug-variable
  935.      information available.  The returned function takes a frame as an
  936.      argument.  See also eval-in-frame *Note Frames::.
  937.  
  938.  
  939.  
  940.  
  941.  -- Function: function-debug-function function
  942.  
  943.      This function returns a debug-function that represents debug information for
  944.      FUNCTION.
  945.  
  946.  
  947.  
  948.  
  949.  -- Function: debug-function-kind debug-function
  950.  
  951.      This function returns the kind of function DEBUG-FUNCTION represents.
  952.      The value is one of the following:
  953.      `:optional'     
  954.           
  955.           This kind of function is an entry point to an ordinary function.  It handles
  956.           optional defaulting, parsing keywords, etc.
  957.      `:external'     
  958.           
  959.           This kind of function is an entry point to an ordinary function.  It checks
  960.           argument values and count and calls the defined function.
  961.      `:top-level'     
  962.           
  963.           This kind of function executes one or more random top-level forms
  964.           from a file.
  965.      `:cleanup'     
  966.           
  967.           This kind of function represents the cleanup forms in an `unwind-protect'.
  968.      nil     
  969.           This kind of function is not one of the above; that is, it is not specially
  970.           marked in any way.
  971.      
  972.  
  973.  
  974.  
  975.  
  976.  -- Function: debug-function-function debug-function
  977.  
  978.      This function returns the Common Lisp function associated with the 
  979.      DEBUG-FUNCTION.  This returns nilif the function is unavailable or is
  980.      non-existent as a user callable function object.
  981.  
  982.  
  983.  
  984.  
  985.  -- Function: debug-function-name debug-function
  986.  
  987.      This function returns the name of the function represented by 
  988.      DEBUG-FUNCTION.  This may be a string or a cons; do not assume it is a symbol.
  989.  
  990.  
  991.  
  992.  
  993. 
  994. File: cmu-user.info  Node: Debug-blocks, Prev: Debug-functions, Up: Debugger Programmer's Interface, Next: Breakpoints
  995.  
  996. Debug-blocks
  997. ============
  998.  
  999.  
  1000. Debug-blocks contain information pertinent to a specific range of code in a
  1001. debug-function.
  1002.  
  1003.  
  1004.  -- Macro: do-debug-block-locations (code-var debug-block [result]) {form}*
  1005.  
  1006.      This macro executes each FORM in a context with CODE-VAR bound to
  1007.      each code-location in DEBUG-BLOCK.  This returns the value of executing
  1008.      RESULT (defaults to nil).
  1009.  
  1010.  
  1011.  
  1012.  
  1013.  -- Function: debug-block-successors debug-block
  1014.  
  1015.      This function returns the list of possible code-locations where execution may
  1016.      continue when the basic-block represented by DEBUG-BLOCK completes its
  1017.      execution.
  1018.  
  1019.  
  1020.  
  1021.  
  1022.  -- Function: debug-block-elsewhere-p debug-block
  1023.  
  1024.      This function returns whether DEBUG-BLOCK represents elsewhere code.
  1025.      This is code the compiler has moved out of a function's code sequence for
  1026.      optimization reasons.  Code-locations in these blocks are unsuitable for
  1027.      stepping tools, and the first code-location has nothing to do with a normal
  1028.      starting location for the block.
  1029.  
  1030.  
  1031.  
  1032.  
  1033. 
  1034. File: cmu-user.info  Node: Breakpoints, Prev: Debug-blocks, Up: Debugger Programmer's Interface, Next: Code-locations
  1035.  
  1036. Breakpoints
  1037. ===========
  1038.  
  1039.  
  1040. A breakpoint represents a function the system calls with the current frame when
  1041. execution passes a certain code-location.  A break point is active or inactive
  1042. independent of its existence.  They also have an extra slot for users to tag
  1043. the breakpoint with information.
  1044.  
  1045.  
  1046.  -- Function: make-breakpoint hook-function what
  1047.              &keys :kind :info :function-end-cookie
  1048.  
  1049.      This function creates and returns a breakpoint.  When program execution
  1050.      encounters the breakpoint, the system calls HOOK-FUNCTION.
  1051.      HOOK-FUNCTION takes the current frame for the function in which the
  1052.      program is running and the breakpoint object.
  1053.      
  1054.      WHAT and KIND determine where in a function the system invokes
  1055.      HOOK-FUNCTION.  WHAT is either a code-location or a
  1056.      debug-function.  KIND is one of `:code-location', 
  1057.      `:function-start', or `:function-end'.  Since the starts and ends of
  1058.      functions may not have code-locations representing them, designate these places
  1059.      by supplying WHAT as a debug-function and KIND indicating the
  1060.      `:function-start' or `:function-end'.  When WHAT is a
  1061.      debug-function and KIND is `:function-end', then hook-function must
  1062.      take two additional arguments, a list of values returned by the function and a
  1063.      function-end-cookie.
  1064.      
  1065.      INFO is information supplied by and used by the user.
  1066.      
  1067.      FUNCTION-END-COOKIE is a function.  To implement function-end
  1068.      breakpoints, the system uses starter breakpoints to establish the function-end
  1069.      breakpoint for each invocation of the function.  Upon each entry, the system
  1070.      creates a unique cookie to identify the invocation, and when the user supplies
  1071.      a function for this argument, the system invokes it on the cookie.  The system
  1072.      later invokes the function-end breakpoint hook on the same cookie.  The user
  1073.      may save the cookie when passed to the function-end-cookie function for
  1074.      later comparison in the hook function.
  1075.      
  1076.      This signals an error if WHAT is an unknown code-location.
  1077.  
  1078.  
  1079.  
  1080.  
  1081.  -- Function: activate-breakpoint breakpoint
  1082.  
  1083.      This function causes the system to invoke the BREAKPOINT's hook-function
  1084.      until the next call to `deactivate-breakpoint' or `delete-breakpoint'.
  1085.      The system invokes breakpoint hook functions in the opposite order that you
  1086.      activate them.
  1087.  
  1088.  
  1089.  
  1090.  
  1091.  -- Function: deactivate-breakpoint breakpoint
  1092.  
  1093.      This function stops the system from invoking the BREAKPOINT's
  1094.      hook-function.
  1095.  
  1096.  
  1097.  
  1098.  
  1099.  -- Function: breakpoint-active-p breakpoint
  1100.  
  1101.      This returns whether BREAKPOINT is currently active.
  1102.  
  1103.  
  1104.  
  1105.  
  1106.  -- Function: breakpoint-hook-function breakpoint
  1107.  
  1108.      This function returns the BREAKPOINT's function the system calls when
  1109.      execution encounters BREAKPOINT, and it is active.  This is 
  1110.      `SETF''able.
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  -- Function: breakpoint-info breakpoint
  1116.  
  1117.      This function returns BREAKPOINT's information supplied by the user.
  1118.      This is `SETF''able.
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  -- Function: breakpoint-kind breakpoint
  1124.  
  1125.      This function returns the BREAKPOINT's kind specification.
  1126.  
  1127.  
  1128.  
  1129.  
  1130.  -- Function: breakpoint-what breakpoint
  1131.  
  1132.      This function returns the BREAKPOINT's what specification.
  1133.  
  1134.  
  1135.  
  1136.  
  1137.  -- Function: delete-breakpoint breakpoint
  1138.  
  1139.      This function frees system storage and removes computational overhead
  1140.      associated with BREAKPOINT.  After calling this, BREAKPOINT is
  1141.      useless and can never become active again.
  1142.  
  1143.  
  1144.  
  1145.  
  1146. 
  1147. File: cmu-user.info  Node: Code-locations, Prev: Breakpoints, Up: Debugger Programmer's Interface, Next: Debug-sources
  1148.  
  1149. Code-locations
  1150. ==============
  1151.  
  1152.  
  1153. Code-locations represent places in functions where the system has correct
  1154. information about the function's environment and where interesting operations
  1155. can occur --- asking for a local variable's value, setting breakpoints,
  1156. evaluating forms within the function's environment, etc.
  1157.  
  1158. Sometimes the interface returns unknown code-locations.  These represent places
  1159. in functions, but there is no debug information associated with them.  Some
  1160. operations accept these since they may succeed even with missing debug data.
  1161. These operations' argument is named BASIC-CODE-LOCATION indicating they
  1162. take known and unknown code-locations.  If an operation names its argument
  1163. CODE-LOCATION, and you supply an unknown one, it will signal an error.
  1164. For example, `frame-code-location' may return an unknown code-location if
  1165. someone interrupted Lisp in the given frame.  The system knows where execution
  1166. will continue, but this place in the code may not be a place for which the
  1167. compiler dumped debug information.
  1168.  
  1169.  
  1170.  -- Function: code-location-debug-function basic-code-location
  1171.  
  1172.      This function returns the debug-function representing information about the
  1173.      function corresponding to the code-location.
  1174.  
  1175.  
  1176.  
  1177.  
  1178.  -- Function: code-location-debug-block basic-code-location
  1179.  
  1180.      This function returns the debug-block containing code-location if it is
  1181.      available.  Some debug policies inhibit debug-block information, and if none is
  1182.      available, then this signals a `no-debug-blocks' condition.
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  -- Function: code-location-top-level-form-offset code-location
  1188.  
  1189.      This function returns the number of top-level forms before the one containing
  1190.      CODE-LOCATION as seen by the compiler in some compilation unit.  A
  1191.      compilation unit is not necessarily a single file, see the section on
  1192.      debug-sources.
  1193.  
  1194.  
  1195.  
  1196.  
  1197.  -- Function: code-location-form-number code-location
  1198.  
  1199.      This function returns the number of the form corresponding to 
  1200.      CODE-LOCATION.  The form number is derived by walking the subforms of a
  1201.      top-level form in depth-first order.  While walking the top-level form, count
  1202.      one in depth-first order for each subform that is a cons.  See
  1203.      form-number-translations ?. 
  1204.  
  1205.  
  1206.  
  1207.  
  1208.  -- Function: code-location-debug-source code-location
  1209.  
  1210.      This function returns CODE-LOCATION's debug-source.
  1211.  
  1212.  
  1213.  
  1214.  
  1215.  -- Function: code-location-unknown-p basic-code-location
  1216.  
  1217.      This function returns whether BASIC-CODE-LOCATION is unknown.  It returns
  1218.      nilwhen the code-location is known.
  1219.  
  1220.  
  1221.  
  1222.  
  1223.  -- Function: code-location= code-location1 code-location2
  1224.  
  1225.      This function returns whether the two code-locations are the same.
  1226.  
  1227.  
  1228.  
  1229.  
  1230. 
  1231. File: cmu-user.info  Node: Debug-sources, Prev: Code-locations, Up: Debugger Programmer's Interface, Next: Source Translation Utilities
  1232.  
  1233. Debug-sources
  1234. =============
  1235.  
  1236.  
  1237. Debug-sources represent how to get back the source for some code.  The source
  1238. is either a file (`compile-file' or `load'), a lambda-expression
  1239. (`compile', `defun', `defmacro'), or a stream (something
  1240. particular to CMU Common Lisp, `compile-from-stream').
  1241.  
  1242. When compiling a source, the compiler counts each top-level form it processes,
  1243. but when the compiler handles multiple files as one block compilation, the
  1244. top-level form count continues past file boundaries.  Therefore
  1245. `code-location-top-level-form-offset' returns an offset that does not
  1246. always start at zero for the code-location's debug-source.  The offset into a
  1247. particular source is `code-location-top-level-form-offset' minus
  1248. `debug-source-root-number'.
  1249.  
  1250. Inside a top-level form, a code-location's form number indicates the subform
  1251. corresponding to the code-location.  
  1252.  
  1253.  
  1254.  -- Function: debug-source-from debug-source
  1255.  
  1256.      This function returns an indication of the type of source.  The following
  1257.      are the possible values:
  1258.      `:file'     
  1259.           
  1260.           from a file (obtained by `compile-file' if compiled).
  1261.      `:lisp'     
  1262.           
  1263.           from Lisp (obtained by `compile' if compiled).
  1264.      `:stream'     
  1265.           
  1266.           from a non-file stream (CMU Common Lisp supports `compile-from-stream').
  1267.      
  1268.  
  1269.  
  1270.  
  1271.  
  1272.  -- Function: debug-source-name debug-source
  1273.  
  1274.      This function returns the actual source in some sense represented by
  1275.      debug-source, which is related to `debug-source-from':
  1276.      `:file'     
  1277.           
  1278.           the pathname of the file.
  1279.      `:lisp'     
  1280.           
  1281.           a lambda-expression.
  1282.      `:stream'     
  1283.           
  1284.           some descriptive string that's otherwise useless.
  1285.      
  1286.  
  1287.  
  1288.  
  1289.  
  1290.  -- Function: debug-source-created debug-source
  1291.  
  1292.      This function returns the universal time someone created the source.  This
  1293.      may be nilif it is unavailable.
  1294.  
  1295.  
  1296.  
  1297.  
  1298.  -- Function: debug-source-compiled debug-source
  1299.  
  1300.      This function returns the time someone compiled the source.  This is nilif the source is uncompiled.
  1301.  
  1302.  
  1303.  
  1304.  
  1305.  -- Function: debug-source-root-number debug-source
  1306.  
  1307.      This returns the number of top-level forms processed by the compiler before
  1308.      compiling this source.  If this source is uncompiled, this is zero.  This may
  1309.      be zero even if the source is compiled since the first form in the first file
  1310.      compiled in one compilation, for example, must have a root number of zero ---
  1311.      the compiler saw no other top-level forms before it.
  1312.  
  1313.  
  1314.  
  1315. 
  1316. File: cmu-user.info  Node: Source Translation Utilities, Prev: Debug-sources, Up: Debugger Programmer's Interface
  1317.  
  1318. Source Translation Utilities
  1319. ============================
  1320.  
  1321.  
  1322. These two functions provide a mechanism for converting the rather
  1323. obscure (but highly compact) representation of source locations into an
  1324. actual source form:
  1325.  
  1326.  
  1327.  -- Function: debug-source-start-positions debug-source
  1328.  
  1329.      This function returns the file position of each top-level form as an array if
  1330.      DEBUG-SOURCE is from a `:file'.  If `debug-source-from' is 
  1331.      `:lisp' or `:stream', this returns nil.
  1332.  
  1333.  
  1334.  
  1335.  
  1336.  -- Function: form-number-translations form tlf-number
  1337.  
  1338.      This function returns a table mapping form numbers (see
  1339.      `code-location-form-number') to source-paths.  A source-path indicates a
  1340.      descent into the top-level-form FORM, going directly to the subform
  1341.      corresponding to a form number.  TLF-NUMBER is the top-level-form number
  1342.      of FORM.
  1343.  
  1344.  
  1345.  
  1346.  
  1347.  -- Function: source-path-context form path context
  1348.  
  1349.      This function returns the subform of FORM indicated by the source-path.
  1350.      FORM is a top-level form, and PATH is a source-path into it.  
  1351.      CONTEXT is the number of enclosing forms to return instead of directly
  1352.      returning the source-path form.  When CONTEXT is non-zero, the
  1353.      form returned contains a marker, `', immediately
  1354.      before the form indicated by PATH.
  1355.  
  1356.  
  1357.  
  1358.  
  1359. 
  1360. File: cmu-user.info  Node: Function Index, Prev: Debugger Programmer's Interface, Up: Top, Next: Variable Index
  1361.  
  1362. Function Index
  1363. **************
  1364.  
  1365.  
  1366.  
  1367. * Menu:
  1368.  
  1369. * activate-breakpoint: Breakpoints.
  1370. * add-fd-handler: Using SERVE-EVENT with Unix File Descriptors.
  1371. * add-oob-handler: Out-Of-Band Data.
  1372. * addr: Alien Coercion Operations.
  1373. * add-xwindow-object: Object Sets.
  1374. * alien-funcall: alien-funcall.
  1375. * alien-sap: Alien Coercion Operations.
  1376. * ambiguous-debug-variables: Debug-functions.
  1377. * breakpoint-active-p: Breakpoints.
  1378. * breakpoint-hook-function: Breakpoints.
  1379. * breakpoint-info: Breakpoints.
  1380. * breakpoint-kind: Breakpoints.
  1381. * breakpoint-what: Breakpoints.
  1382. * cast: Alien Coercion Operations.
  1383. * clear-search-list: Search Lists.
  1384. * cmd-switch-name: Reading the Command Line.
  1385. * cmd-switch-value: Reading the Command Line.
  1386. * cmd-switch-words: Reading the Command Line.
  1387. * code-location=: Code-locations.
  1388. * code-location-debug-block: Code-locations.
  1389. * code-location-debug-function: Code-locations.
  1390. * code-location-debug-source: Code-locations.
  1391. * code-location-form-number: Code-locations.
  1392. * code-location-top-level-form-offset: Code-locations.
  1393. * code-location-unknown-p: Code-locations.
  1394. * compile: Calling the Compiler.
  1395. * compile-file: Calling the Compiler.
  1396. * compile-from-stream: Calling the Compiler.
  1397. * connect-to-remote-server: Connecting Servers and Clients.
  1398. * create-request-server: Connecting Servers and Clients.
  1399. * deactivate-breakpoint: Breakpoints.
  1400. * debug-block-elsewhere-p: Debug-blocks.
  1401. * debug-block-successors: Debug-blocks.
  1402. * debug-function-function: Debug-functions.
  1403. * debug-function-kind: Debug-functions.
  1404. * debug-function-lambda-list: Debug-functions.
  1405. * debug-function-name: Debug-functions.
  1406. * debug-function-symbol-variables: Debug-functions.
  1407. * debug-source-compiled: Debug-sources.
  1408. * debug-source-created: Debug-sources.
  1409. * debug-source-from: Debug-sources.
  1410. * debug-source-name: Debug-sources.
  1411. * debug-source-root-number: Debug-sources.
  1412. * debug-source-start-positions: Source Translation Utilities.
  1413. * debug-variable-id: Debug-variables.
  1414. * debug-variable-info-available: Debug-functions.
  1415. * debug-variable-name: Debug-variables.
  1416. * debug-variable-package: Debug-variables.
  1417. * debug-variable-symbol: Debug-variables.
  1418. * debug-variable-validity: Debug-variables.
  1419. * debug-variable-valid-value: Debug-variables.
  1420. * debug-variable-value: Debug-variables.
  1421. * def-alien-routine: def-alien-routine.
  1422. * def-alien-type: Defining Alien Types.
  1423. * def-alien-variable: External Alien Variables.
  1424. * default-interrupt: Changing Interrupt Handlers.
  1425. * def-source-context: Error Message Parameterization.
  1426. * delete-breakpoint: Breakpoints.
  1427. * deref: Alien Access Operations.
  1428. * describe: Describe.
  1429. * destroy-request-server: Connecting Servers and Clients.
  1430. * disable-clx-event-handling: Without Object Sets.
  1431. * do-debug-block-locations: Debug-blocks.
  1432. * do-debug-function-blocks: Debug-functions.
  1433. * do-debug-function-variables: Debug-functions.
  1434. * enable-clx-event-handling: Without Object Sets.
  1435. * enable-interrupt: Changing Interrupt Handlers.
  1436. * encapsulate: Encapsulation Functions.
  1437. * encapsulated-p: Encapsulation Functions.
  1438. * enumerate-search-list: Search Lists.
  1439. * eval-in-frame: Frames.
  1440. * extern-alien: External Alien Variables.
  1441. * fd-stream-fd: File Descriptor Streams.
  1442. * fd-stream-p: File Descriptor Streams.
  1443. * float-infinity-p: IEEE Special Values.
  1444. * float-nan-p: IEEE Special Values.
  1445. * float-normalized-p: Denormalized Floats.
  1446. * float-trapping-nan-p: IEEE Special Values.
  1447. * flush-display-events: Using SERVE-EVENT with the CLX Interface to X.
  1448. * forget-remote-translation: Remote Objects.
  1449. * format-decoded-time: Time Parsing and Formatting.
  1450. * format-universal-time: Time Parsing and Formatting.
  1451. * form-number-translations: Source Translation Utilities.
  1452. * frame-catches: Frames.
  1453. * frame-code-location: Frames.
  1454. * frame-debug-function: Frames.
  1455. * frame-down: Frames.
  1456. * frame-up: Frames.
  1457. * free-alien: Alien Dynamic Allocation.
  1458. * function-debug-function: Debug-functions.
  1459. * gc: Garbage Collection.
  1460. * gc-off: Garbage Collection.
  1461. * gc-on: Garbage Collection.
  1462. * get-bytes-consed: Additional Timing Utilities.
  1463. * get-floating-point-modes: Accessing the Floating Point Modes.
  1464. * get-unix-error-msg: Unix System Calls.
  1465. * gr-bind: Making Sense of Mach Return Codes.
  1466. * gr-call*: Making Sense of Mach Return Codes.
  1467. * gr-call: Making Sense of Mach Return Codes.
  1468. * gr-error: Making Sense of Mach Return Codes.
  1469. * host-entry-addr: Host Addresses.
  1470. * host-entry-addr-list: Host Addresses.
  1471. * host-entry-aliases: Host Addresses.
  1472. * host-entry-name: Host Addresses.
  1473. * ignore-interrupt: Changing Interrupt Handlers.
  1474. * inspect: The Inspector.
  1475. * int-sap: System Area Pointers.
  1476. * invalidate-descriptor: Using SERVE-EVENT with Unix File Descriptors.
  1477. * iterate: Local Tail Recursion.
  1478. * load: Load.
  1479. * load-foreign: Loading Unix Object Files.
  1480. * lookup-host-entry: Host Addresses.
  1481. * make-alien: Alien Dynamic Allocation.
  1482. * make-breakpoint: Breakpoints.
  1483. * make-fd-stream: File Descriptor Streams.
  1484. * make-object-set: Object Sets.
  1485. * make-remote-object: Remote Objects.
  1486. * make-wire: Making Your Own Wires.
  1487. * object-set-event-handler: With Object Sets.
  1488. * object-set-operation: Object Sets.
  1489. * open-clx-display: Using SERVE-EVENT with the CLX Interface to X.
  1490. * parse-time: Time Parsing and Formatting.
  1491. * preprocess-for-eval: Debug-functions.
  1492. * process-alive-p: Process Accessors.
  1493. * process-close: Process Accessors.
  1494. * process-core-dumped: Process Accessors.
  1495. * process-error: Process Accessors.
  1496. * process-exit-code: Process Accessors.
  1497. * process-input: Process Accessors.
  1498. * process-kill: Process Accessors.
  1499. * process-output: Process Accessors.
  1500. * process-p: Process Accessors.
  1501. * process-pid: Process Accessors.
  1502. * process-plist: Process Accessors.
  1503. * process-pty: Process Accessors.
  1504. * process-status: Process Accessors.
  1505. * process-status-hook: Process Accessors.
  1506. * process-wait: Process Accessors.
  1507. * profile: Profile Interface.
  1508. * remote: Remote Evaluations.
  1509. * remote-object-eq: Remote Objects.
  1510. * remote-object-local-p: Remote Objects.
  1511. * remote-object-p: Remote Objects.
  1512. * remote-object-value: Remote Objects.
  1513. * remote-value: Remote Evaluations.
  1514. * remote-value-bind: Remote Evaluations.
  1515. * remove-all-oob-handlers: Out-Of-Band Data.
  1516. * remove-fd-handler: Using SERVE-EVENT with Unix File Descriptors.
  1517. * remove-oob-handler: Out-Of-Band Data.
  1518. * report-time: Profile Interface.
  1519. * required-argument: Compile Time Type Errors.
  1520. * reset-time: Profile Interface.
  1521. * return-from-frame: Frames.
  1522. * run-program: Running Programs from Lisp.
  1523. * sap+: System Area Pointers.
  1524. * sap-alien: Alien Coercion Operations.
  1525. * sap-int: System Area Pointers.
  1526. * sap-ref-16: System Area Pointers.
  1527. * sap-ref-32: System Area Pointers.
  1528. * sap-ref-8: System Area Pointers.
  1529. * save-lisp: Saving a Core Image.
  1530. * search-list: Search Lists.
  1531. * search-list-defined-p: Search Lists.
  1532. * send-character-out-of-band: Out-Of-Band Data.
  1533. * serve-all-events: The SERVE-EVENT Function.
  1534. * serve-event: The SERVE-EVENT Function.
  1535. * set-floating-point-modes: Accessing the Floating Point Modes.
  1536. * signed-sap-ref-16: System Area Pointers.
  1537. * signed-sap-ref-32: System Area Pointers.
  1538. * signed-sap-ref-8: System Area Pointers.
  1539. * slot: Alien Access Operations.
  1540. * source-path-context: Source Translation Utilities.
  1541. * time: Additional Timing Utilities.
  1542. * top-frame: Frames.
  1543. * trace: Function Tracing.
  1544. * unencapsulate: Encapsulation Functions.
  1545. * unprofile: Profile Interface.
  1546. * untrace: Function Tracing.
  1547. * var: Variable Access.
  1548. * wait-until-fd-usable: Using SERVE-EVENT with Unix File Descriptors.
  1549. * wire-fd: Making Your Own Wires.
  1550. * wire-force-output: Remote Evaluations.
  1551. * wire-get-byte: Untagged Data.
  1552. * wire-get-number: Untagged Data.
  1553. * wire-get-object: Tagged Data.
  1554. * wire-get-string: Untagged Data.
  1555. * wire-output-byte: Untagged Data.
  1556. * wire-output-number: Untagged Data.
  1557. * wire-output-object: Tagged Data.
  1558. * wire-output-string: Untagged Data.
  1559. * wire-p: Making Your Own Wires.
  1560. * with-alien: Local Alien Variables.
  1561. * with-clx-event-handling: Without Object Sets.
  1562. * with-compilation-unit: Compilation Units.
  1563. * with-enabled-interrupts: Changing Interrupt Handlers.
  1564. * with-fd-handler: Using SERVE-EVENT with Unix File Descriptors.
  1565. * with-interrupts: Changing Interrupt Handlers.
  1566. * without-hemlock: Changing Interrupt Handlers.
  1567. * without-interrupts: Changing Interrupt Handlers.
  1568.  
  1569.  
  1570. 
  1571.